<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    template="/plantillas/plantilla-sistema.xhtml">
    <ui:define name="cabecera">
        <title>Gestión de Familias</title>
        <link rel="shortcut icon"  href="../../resources/imagenes/favicon.ico" />
    </ui:define>
    <ui:define name="contenido">
        <center>
            <p:panel id="familiaPnl" header="Familias" style="width: 950px">
                <h:form id="tablaFamiliaFrm">
                    <p:dataTable id="tablaFamilia" var="familia" rows="10" selectionMode="single"
                                 value="#{familiaBean.listaFamilia}" rowKey="#{familia.codigofamilia}"
                                 paginator="true" paginatorPosition="bottom" resizableColumns="true"
                                 emptyMessage="No hay registros disponibles.">
                        <p:column headerText="Super-Familia" filterMatchMode="contains"
                                  filterBy="#{familia.superfamilia.nombre}"
                                  sortBy="#{familia.superfamilia.nombre}">
                            <h:outputText id="superfamiliaTxt" value="#{familia.superfamilia.nombre}" />
                        </p:column>
                        <p:column headerText="Familia" filterBy="#{familia.nombre}" 
                                  sortBy="#{familia.nombre}" filterMatchMode="contains">
                            <h:outputText id="nombreTxt" value="#{familia.nombre}" />
                        </p:column>
                        <p:column headerText="Sub-Familia" filterBy="#{familia.subfamilia}" 
                                  sortBy="#{familia.subfamilia}" filterMatchMode="contains">
                            <h:outputText id="subfamiliaTxt" value="#{familia.subfamilia}" />
                        </p:column>
                        <p:column headerText="Tribu" filterBy="#{familia.tribu}" 
                                  sortBy="#{familia.tribu}" filterMatchMode="contains">
                            <h:outputText id="tribuTxt" value="#{familia.tribu}" />
                        </p:column>                        
                        <p:column headerText="Phylum" filterMatchMode="contains"
                                  filterBy="#{familia.superfamilia.orden.clase.phylum.nombre}" 
                                  sortBy="#{familia.superfamilia.orden.clase.phylum.nombre}">
                            <h:outputText id="phylumTxt" value="#{familia.superfamilia.orden.clase.phylum.nombre}" />
                        </p:column>
                        <p:column headerText="Clase" filterBy="#{familia.superfamilia.orden.clase.nombre}" 
                                  sortBy="#{familia.superfamilia.orden.clase.nombre}" filterMatchMode="contains">
                            <h:outputText id="claseTxt" value="#{familia.superfamilia.orden.clase.nombre}" />
                        </p:column>
                        <p:column headerText="Sub-Clase" filterBy="#{familia.superfamilia.orden.clase.subclase}" 
                                  sortBy="#{familia.superfamilia.orden.clase.subclase}" filterMatchMode="contains">
                            <h:outputText id="subclaseTxt" value="#{familia.superfamilia.orden.clase.subclase}" />
                        </p:column>
                        <p:column headerText="Infra-Clase" filterBy="#{familia.superfamilia.orden.clase.infraclase}" 
                                  sortBy="#{familia.superfamilia.orden.clase.infraclase}" filterMatchMode="contains">
                            <h:outputText id="infraclaseTxt" value="#{familia.superfamilia.orden.clase.infraclase}" />
                        </p:column>
                        <p:column headerText="Orden" filterBy="#{familia.superfamilia.orden.nombre}" 
                                  sortBy="#{familia.superfamilia.orden.nombre}" filterMatchMode="contains">
                            <h:outputText id="ordenTxt" value="#{familia.superfamilia.orden.nombre}" />
                        </p:column>
                        <p:column headerText="Sub-Orden" filterBy="#{familia.superfamilia.orden.suborden}" 
                                  sortBy="#{familia.superfamilia.orden.suborden}" filterMatchMode="contains">
                            <h:outputText id="subordenTxt" value="#{familia.superfamilia.orden.suborden}" />
                        </p:column>                                          
                        <p:column headerText="Habilitado" filterBy="#{familia.habilitado}" 
                                  sortBy="#{familia.habilitado}" filterMatchMode="contains">
                            <h:outputText id="habilitadoTxt" value="#{familia.habilitado}" />
                        </p:column>
                        <p:column headerText="Modificar">
                            <center>
                                <p:commandButton id="modificarBtn" title="Modificar" icon="ui-icon-pencil"
                                                 oncomplete="modificarFamiliaWgt.show()"
                                                 actionListener="#{familiaBean.prepararModificacion(familia)}"
                                                 update=":modificarFamiliaFrm:modificarFamiliaPnl"/>
                            </center>
                        </p:column>   
                    </p:dataTable>
                    <p:commandButton id="nuevoBtn" value="Nueva Familia"
                                     oncomplete="guardarFamiliaWgt.show()"
                                     actionListener="#{familiaBean.prepararAdicion}"
                                     update=":guardarFamiliaFrm:guardarFamiliaPnl"
                                     title="Agregar nueva familia" icon="ui-icon-document" />
                </h:form>
            </p:panel>
        </center>
    </ui:define>
    <ui:define name="extra">
        <p:dialog id="guardarFamiliaDlg" header="Nueva Familia" widgetVar="guardarFamiliaWgt" 
                  resizable="false" modal="true" showEffect="false">
            <h:form id="guardarFamiliaFrm">
                <h:panelGrid id="guardarFamiliaPnl" columns="2" style="margin-bottom:10px">
                    <p:outputLabel for="codigosuperfamiliaTxt" value="Super-Familia:" />
                    <p:selectOneMenu id="codigosuperfamiliaTxt" value="#{familiaBean.familia.superfamilia}"
                                     filter="true" filterMatchMode="contains">
                        <f:selectItem itemLabel="Seleccione" itemValue="" />
                        <f:selectItems value="#{familiaBean.listaSuperfamilia}" />
                        <f:converter converterId="superfamiliaConverter" />                        
                    </p:selectOneMenu>
                    <p:outputLabel for="nombreTxt" value="Nombre de la Familia: " />
                    <p:inputText id="nombreTxt" title="Obligatorio" value="#{familiaBean.familia.nombre}" />
                    <p:outputLabel for="subfamiliaTxt" value="Nombre de la Sub-Familia: " />
                    <p:inputText id="subfamiliaTxt" title="Opcional" value="#{familiaBean.familia.subfamilia}" />
                    <p:outputLabel for="tribuTxt" value="Nombre de la Tribu: " />
                    <p:inputText id="tribuTxt" title="Opcional" value="#{familiaBean.familia.tribu}" />
                    <p:spacer width="20" height="20" />
                    <p:spacer width="20" height="20" />
                    <p:commandButton id="guardarBtn"  actionListener="#{familiaBean.agregarFamilia}"
                                     oncomplete=":guardarFamiliaWgt.hide()" 
                                     update=":tablaFamiliaFrm:tablaFamilia" 
                                     value="Guardar" icon="ui-icon-disk" title="Guardar"/>
                    <p:commandButton value="Cancelar" type="button" onclick="guardarFamiliaWgt.hide()"
                                     icon="ui-icon-cancel" title="Cancelar"/>
                </h:panelGrid>
            </h:form>
        </p:dialog>
        <p:dialog id="modificarFamiliaDlg" header="Modificar Familia" widgetVar="modificarFamiliaWgt" 
                  resizable="false" modal="true" showEffect="false">
            <h:form id="modificarFamiliaFrm">
                <h:panelGrid id="modificarFamiliaPnl" columns="2" style="margin-bottom:10px">
                    <p:outputLabel for="codigosuperfamiliaTxt" value="Super-Familia:" />
                    <p:selectOneMenu id="codigosuperfamiliaTxt" value="#{familiaBean.familia.superfamilia}"
                                     filter="true" filterMatchMode="contains">
                        <f:selectItem itemLabel="Seleccione" itemValue="" />
                        <f:selectItems value="#{familiaBean.listaSuperfamilia}" />
                        <f:converter converterId="superfamiliaConverter" />                        
                    </p:selectOneMenu>
                    <p:outputLabel for="nombreTxt" value="Nombre de la Familia: " />
                    <p:inputText id="nombreTxt" title="Obligatorio" value="#{familiaBean.familia.nombre}" />
                    <p:outputLabel for="subfamiliaTxt" value="Nombre de la Sub-Familia: " />
                    <p:inputText id="subfamiliaTxt" title="Opcional" value="#{familiaBean.familia.subfamilia}" />
                    <p:outputLabel for="tribuTxt" value="Nombre de la Tribu: " />
                    <p:inputText id="tribuTxt" title="Opcional" value="#{familiaBean.familia.tribu}" />
                    <p:outputLabel for="habilitadoTxt" value="Habilitado: " />
                    <p:selectBooleanCheckbox id="habilitadoTxt" value="#{familiaBean.familia.habilitado}" />
                    <p:spacer width="20" height="20" />
                    <p:spacer width="20" height="20" />
                    <p:commandButton id="guardarBtn" actionListener="#{familiaBean.actualizarFamilia}" 
                                     oncomplete=":modificarFamiliaWgt.hide()" 
                                     update=":tablaFamiliaFrm:tablaFamilia" 
                                     value="Guardar" icon="ui-icon-disk" title="Guardar"/>
                    <p:commandButton value="Cancelar" type="button" onclick="modificarFamiliaWgt.hide()"
                                     icon="ui-icon-cancel" title="Cancelar"/>
                </h:panelGrid>
            </h:form>
        </p:dialog>
    </ui:define>
</ui:composition>